﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Microsoft.Synchronization.Data;
using System.IO;
using System.Xml;

namespace SyncLib.Client
{
    public partial class SolveConflict : Form
    {
        Dictionary<string, string> conflictDess;
        public SolveConflict()
        {
            
            InitializeComponent();
            conflictDess = new Dictionary<string, string>();
            conflictDess.Add(DbConflictType.ErrorsOccurred.ToString(), "Xuất hiện lỗi khi áp dụng");
            conflictDess.Add(DbConflictType.LocalCleanedupDeleteRemoteUpdate.ToString(), "LocalCleanedupDeleteRemoteUpdate");
            conflictDess.Add(DbConflictType.LocalDeleteRemoteDelete.ToString(), "Máy trạm và máy chủ cùng xóa một bản ghi");
            conflictDess.Add(DbConflictType.LocalDeleteRemoteUpdate.ToString(), "Máy trạm đã xóa, máy chủ cập nhật");
            conflictDess.Add(DbConflictType.LocalInsertRemoteInsert.ToString(), "Máy chủ và máy trạm cùng thêm bản ghi");
            conflictDess.Add(DbConflictType.LocalUpdateRemoteDelete.ToString(), "Máy trạm cập nhật máy chủ xóa");
            conflictDess.Add(DbConflictType.LocalUpdateRemoteUpdate.ToString(), "Máy chủ và máy trạm cùng cập nhật bản ghi");
        }
        public KApplyAction ChoiceAction { get; set; }
        public void ShowData(string type, string xmlLocal, string xmlRemote,bool isSolve)
        {
            btnClientWin.Enabled = !isSolve;
            btnServerWin.Enabled = !isSolve;
            lbConflictType.Text = conflictDess[type]+"("+type+")";
            grdClient.PrimaryGrid.DataSource = ReadXML(xmlLocal);
            grdServer.PrimaryGrid.DataSource = ReadXML(xmlRemote);

            ShowDialog();
        }
        DataTable ReadXML(string xml)
        {
            DataSet ds = new DataSet();
           // ds.ReadXml(new XmlTextReader(new StringReader(xml)));
            using (StringReader streamText = new StringReader(xml))
            {
                using (XmlTextReader reader = new XmlTextReader(streamText))
                    ds.ReadXml(reader);                
            }
            return ds.Tables[0];
        }

        private void SolveConflict_Load(object sender, EventArgs e)
        {

        }
    }
}
